#ifndef LISTA_H
#define LISTA_H

typedef struct Nodo
{
    void *p_data;
    struct Nodo *p_siguiente;
} Nodo;

typedef struct Lista
{
    int longitud;
    Nodo *primer;
} Lista;

Lista *Lista_construir();
void Lista_destruir(Lista * Lista, void(*destructor)(void*));

void  Lista_listar(Lista *Lista, void(*mostrador)(void*));
void  Lista_agregar(Lista *Lista,void *p_item);
void *Lista_buscar(Lista *Lista, int (*comprobador)(void*p, void*q), void*r);
void Lista_quitar(Lista *Lista, void *p_item);

#endif
